
let interceptors = {///拦截器
  request(req){//请求拦截器
      return new Promise(next =>{
        req.url = /^http/.test(req.url) ? req.url :(baseUrl+req.url)
        req.header = req.header || {}
        if(wx.token) req.header.token = wx.token
        next(req)
      })
  },
  response(res){///响应拦截器
    return new Promise(next => {
      // console.log(res)
      let data = res.data
      if(res.statusCode == 404){
        data = {errorMsg:'请求接口不存在'}
        // next({errorMsg:'请求接口不存在'})
      }else if(res.statusCode == 500){
        data = {errorMsg:res.data || '服务器错误，请联系网站管理员'}
        // next({errorMsg:res.data || '服务器错误，请联系网站管理员'})
      }else if(res.statusCode == 200){///正常业务
        // next(res.data)
      }else{
        data ={errorMsg:res.errMsg || '未知错误'}
      }
      if(data.errorMsg){
        wx.showToast({
          title:data.errorMsg,
          icon:"error",
          duration:2000
        })
      }
      next(data)
    })
  }
}
////promise方法
const baseUrl= 'https://obuge.com/juzao'

////有拦截器  //query放在请求的url后面的一系列参数  如（recommends?pageNum= ？？）??=query
function GET(url,query,args){
  args = args || {}
  return new Promise((resolve,reject)=>{
   interceptors.request({url,...args}).then(req=>{
    wx.request({
    //  url: baseUrl+url,
     ...req,
     data:query,
     method:'GET',
    success: (res)=> {
          interceptors.response(res).then(data=>{
            resolve(data)
          })
     },
    fail:(res)=>{
         interceptors.response(res).then(data=>{
             resolve(data)
          })
     }
    })  
   })
 
  })
 }
/////// data是放在body里面
 function PUT(url,data,args){
  args = args || {}
  return new Promise((resolve,reject)=>{
    interceptors.request({url,...args}).then(req=>{
     wx.request({
     //  url: baseUrl+url,
      ...req,
      data,
      method:'PUT',
     success: (res)=> {
           interceptors.response(res).then(data=>{
             resolve(data)
           })
      },
     fail:(res)=>{
          interceptors.response(res).then(data=>{
              resolve(data)
           })
      }
     })  
    })
   })
 }
 function POST(url,data,args){
  args = args || {}
  return new Promise((resolve,reject)=>{
    interceptors.request({url,...args}).then(req=>{
     wx.request({
     //  url: baseUrl+url,
      ...req,
      data,
      method:'POST',
     success: (res)=> {
           interceptors.response(res).then(data=>{
             resolve(data)
           })
      },
     fail:(res)=>{
          interceptors.response(res).then(data=>{
              resolve(data)
           })
      }
     })  
    })
   })
 }
 function DELETE(url,data,args){
  args = args || {}
  return new Promise((resolve,reject)=>{
    interceptors.request({url,...args}).then(req=>{
     wx.request({
     //  url: baseUrl+url,
      ...req,
      data,
      method:'DELETE',
     success: (res)=> {
           interceptors.response(res).then(data=>{
             resolve(data)
           })
      },
     fail:(res)=>{
          interceptors.response(res).then(data=>{
              resolve(data)
           })
      }
     })  
    })
   })
 }



module.exports = {
  baseUrl,
  get:GET,
  put:PUT,
  post:POST,
  delete:DELETE
}